package pedidos.modelo;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity
public class Pedido {

	@Id
	Long id;
	
	@Temporal( TemporalType.DATE)
	Date fecha;
	
	Double precioTotal;

	@ManyToOne
	@JoinColumn( name="cliente_id" )
	Cliente cliente;
	
	@OneToMany( cascade={CascadeType.ALL, CascadeType.REMOVE}, fetch=FetchType.LAZY, mappedBy="pedido") 
	List<ItemPedido> items = new ArrayList<ItemPedido>();
	
	@OneToOne( cascade={CascadeType.ALL, CascadeType.REMOVE}, optional=true, fetch=FetchType.LAZY, mappedBy="pedido")
	Factura factura;
	
	public Pedido() { }
	
	public Long getId() {
		return id;
	}
	
	public void setId(Long id) {
		this.id = id;
	}
	
	public Date getFecha() {
		return fecha;
	}
	
	public void setFecha(Date fecha) {
		this.fecha = fecha;
	}
	
	public Double getPrecioTotal() {
		return precioTotal;
	}
	
	public void setPrecioTotal(Double precioTotal) {
		this.precioTotal = precioTotal;
	}

	public Cliente getCliente() {
		return cliente;
	}
	
	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}
	
	public Factura getFactura() {
		return factura;
	}
	
	public void setFactura(Factura factura) {
		this.factura = factura;
	}
	
	public List<ItemPedido> getItems() {
		return items;
	}
	
	public void setItems(List<ItemPedido> items) {
		this.items = items;
	}
	
}
